#ifndef ZHILAISDK_ZLMONITORCONTROLBOARD_H_
#define ZHILAISDK_ZLMONITORCONTROLBOARD_H_

#include "zhilaiSDK.h"

ZLDEVICE_BEGIN_EXPORT

/// \brief 查询固件版本号
///
/// 查询固件版本号
/// \param[out] version “V2.00”：固件版本号
/// \return 错误码F
ZLDEVICE_API int32_t ZLMcbGetFirmwareVersion(char *version);

/// \brief 系统复位指令
///
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbResetSystem();

/// \brief 复位开门板
///
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbResetDcb();

/// \brief 设置温度阀值(单播指令)
///
/// 该接口用于设置指定监控板上的温度上下限
/// \param[in] th 为温度上限，超过此温度则自动启动风扇，反之，不启动
/// \param[in] tl 为温度下限，低于此温度，则关闭风扇
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbSetTemperatureThreshold(int32_t th, int32_t tl);

/// \brief 查询温度阀值
///
/// 该接口用于查询指定监控板上的温度上下限
/// \param[out] th 温度上限值
/// \param[out] tl 温度下限值
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbGetTemperatureThreshold(int32_t *th, int32_t *tl);

/// \brief 启动/关闭风扇
///
/// 该接口用于设置指定监控板上的风扇启停
/// \param[in] flag 启用/关闭标记（0x01：启动风扇，0x00：闭风扇）
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbEnableFan(unsigned char flag);

/// \brief 查询风扇是否正常工作
///
/// 该接口用于设置指定监控板的风扇速度和状态
/// \param[out] speed 风扇转速，单位为转/每分
/// \param[out] status 风扇状态（0x00：工作不正常，0x01：工作正常）
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbGetFanStatus(int32_t *speed, unsigned char *status);

/// \brief 启动/关闭光敏照明灯（单播指令）
///
/// 控制选项说明： 主柜光敏照明灯（0x02：打开，0x03：关闭）， 副柜光敏照明灯（0x01: 打开，0x00：关闭）
/// \param[in] flag 控制选项
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbEnableLamp(unsigned char flag);

/// \brief 获取照明灯的状态
///
/// 获取照明灯的状态
/// \param[out] status 照明灯的状态(0x00：表示照明灯打开，0x01：表示照明灯关闭)
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbGetLampStatus(unsigned char *status);

/// \brief 查询监控板环境当前温度（单播指令）
/// 
/// \param[in]
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbGetTemperature(int32_t *temp);

/// \brief 复位路由器（单播指令）
/// 
/// \param[in]
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbResetRouter();

/// \brief 打开或关闭监控板对工控机电源的监控（单播指令）
/// 控制选项说明：0x01表示打开监控板对工控机电源的控制，0x00表示关闭监控板对工控机电源的控制
/// \param[in] flag 控制选项
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbEnablePowerMonitoring(unsigned char flag);

/// \brief 心跳（单播指令）
/// 当上位机发送了开启监控板对工控机电源的控制之后，必须每间隔 2 分钟下发心跳 指令，否则，如果不发心跳指令，监控板 5 分钟后会重启工控机电源
/// \param[in]
/// \return 错误码
ZLDEVICE_API int32_t ZLMcbHeartBeat();

ZLDEVICE_END_EXPORT

#endif  // ZHILAISDK_ZLMONITORCONTROLBOARD_H_